Web API の設計
発行年 : 2020 年
https://m.media-amazon.com/images/I/61GK-dw0hDL._SX260_.jpg
本書は、次世代の API ガイダンスの第一波
1 部 API デザインの基礎
1 章 API デザインとは何か
2 章 ユーザーを意識した API を設計する
API を設計するにあたって、包括的で正確なゴールリストを作る
ユーザーは誰か? (例えば管理者もユーザーになる)
ユーザーの目標 (ゴール) に対して、「何を」 「どのように」 実現するかを考える
さらに、それぞれのステップにおける 「入力」 と 「出力」 を考える
入力はどこから得る? 出力はどう使われる? ということを考えると、見落としている API のゴールを洗い出せる
API 設計にプロバイダの視点を入れないようにする
内部のデータ構造を露出しないように
ビジネスロジックや複数のシステムが連携する場合のアーキテクチャなどの影響も受けないように
組織構造の影響を受けないように
3 章 プログラミングインターフェイスを設計する
4 章 API 記述フォーマットを使って API を記述する
2 部 ユーザブルな API の設計
5 章 単純明快な API を設計する
単純明快な表現 : 明確な名前、使いやすいデータ型とデータフォーマット
単純明快なインタラクション
エラーフィードバックを洗い出す
不正な形式のリクエストエラー (malformed request error)
機能的エラー (functional error)
サーバーエラー
情報的価値のある成功およびエラーのフィードバック
包括的なエラーフィードバック : エラーが複数あるならばまとめてエラーを返す
単純明快なフロー
6 章 予測可能な API を設計する
4 つのレベルの一貫性 : API 内部、組織・企業・チームの API にまたがる一貫性、API の問題領域での一貫性、外の世界との一貫性 標準に従う
例
適応可能な API
さまざまなフォーマット
HTTP では Accept-Language と Content-Language
7 章 うまく整理された簡潔な API を設計する
3 部 コンテキストに応じた API デザイン
API の互換性
ネットワークの制約
など
8 章 セキュアな API を設計する
エンドポイントをスコープで分類して、スコープごとのアクセス制御を行う
センシティブなデータの扱いにも気を付ける
法規制などもある
9 章 API の設計を進化させる
10 章 ネットワーク効率のよい API を設計する
API をレイヤ化する
11 章 コンテキストに基づいて API を設計する
設計はコンテキストの影響を受ける (人々が何に慣れているのか、など)
他の選択肢もある
同期型のリクエスト / レスポンスだけでなく、イベント通知も
12 章 API を文書化する
利用者向けの説明書だけでなく、実装者向けの説明書も必要 (あるいは設計者が実装に参加する)
13 章 API を成長させる
標準化されている規格が多いが、全部を知っている事は難しい
判断力と検索エンジンの力が重要